#pragma once

#include "LogFile.h"

class CPrecious
{
public:
	typedef int PID;

public:
	CPrecious( PID nID, const tstring& strSymbol );
	virtual ~CPrecious( void );

	virtual bool PickPrice( CLogFile::PRICE_RECORD& rcdPrice );
	virtual bool MakePacket( const tstring& strPrice,
		const tstring& strBidPrice,
		const tstring& strAskPrice,
		BYTE* pBuffer, int& nLen ) const;

	void SetWrap( bool bWrap );

	void SetLogFile( const tstring strLogFile );

	int GetElapse( void ) const;
	void SetElapse( int nElapse );	

	PID GetID( void ) const;

private:
	virtual bool CheckPrice( CLogFile::PRICE_RECORD& rcdPrice ) const;
	virtual CLogFile* CreateLogFile( void );

private:
	CLogFile*	m_pLogFile;
	
	bool		m_bWrap;
	int			m_nElapse;

	tstring		m_strSymbol;
	tstring		m_strFile;

	PID			m_ID;
};

inline void CPrecious::SetWrap( bool bWrap )
{
	m_bWrap = bWrap;
}

inline void CPrecious::SetLogFile( const tstring strLogFile )
{
	ASSERT( NULL != m_pLogFile );

	m_strFile = strLogFile;
	m_pLogFile->Open( strLogFile );
}

inline int CPrecious::GetElapse( void ) const
{
	return m_nElapse;
}

inline void CPrecious::SetElapse( int nElapse )
{
	m_nElapse = nElapse;
}

inline CPrecious::PID CPrecious::GetID( void ) const
{
	return m_ID;
}


// 
// //////////////////////////////////////////////////////////////////////////
// class XAU: public CPrecious
// {
// public:
// 	XAU();
// 	virtual ~XAU( void ){}
// 
// 	static LPCTSTR SYMBOL;
// };
// 
// //////////////////////////////////////////////////////////////////////////
// class XAG: public CPrecious
// {
// public:
// 	XAG();
// 	virtual ~XAG( void ){}
// 
// 	static LPCTSTR SYMBOL;
// };
// 
// //////////////////////////////////////////////////////////////////////////
// class XPD: public CPrecious
// {
// public:
// 	XPD();
// 	virtual ~XPD( void ){}
// 
// 	static LPCTSTR SYMBOL;
// };
